package pe.gob.osinergmin.interfase_siaf.dac.service.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.gob.osinergmin.interfase_siaf.dac.bean.PresupuestoBean;
import pe.gob.osinergmin.interfase_siaf.dac.bean.ResultadoBean;
import pe.gob.osinergmin.interfase_siaf.dac.dao.PresupuestoDao;
import pe.gob.osinergmin.interfase_siaf.dac.domain.Gasto;
import pe.gob.osinergmin.interfase_siaf.dac.service.PresupuestoService;
import pe.gob.osinergmin.interfase_siaf.dac.util.Constantes;


@Service("presupuestoService")
public class PresupuestoServiceImpl implements PresupuestoService {
	
	private final Log logger = LogFactory.getLog(getClass());
	
	@Autowired	
	private PresupuestoDao presupuestoDao;
	
	@Override
	public ResultadoBean buscarPresupuesto(String anioEjec, String secFunc,
			String idClasificador) throws Exception{
		ResultadoBean r = new ResultadoBean();
		Gasto gasto =null;
		PresupuestoBean bean = null;
		try {
			List<PresupuestoBean> listaPres = new ArrayList<PresupuestoBean>();
			gasto = new Gasto();
			gasto.setAnoEje(anioEjec);
			gasto.setSecFunc(secFunc);
			gasto.setIdClasifi(idClasificador); 			
			List<Gasto> lista = presupuestoDao.buscarPresupuesto(gasto);
			for(Gasto g : lista){
				bean = new PresupuestoBean();
				bean.setSecuenciaFunc(g.getSecFunc()); 
				bean.setIdClasificador(g.getIdClasifi());
				bean.setCompromiso(g.getCompromiso());
				bean.setDevengado(g.getDevengado());
				bean.setEjecucion(g.getEjecucion());
				bean.setGirado(g.getGirado());
				bean.setModificacion(g.getModificaci());
				bean.setMontoCertificado(g.getMontoCert());
				bean.setMontoComproAnual(g.getMontoComp());
				bean.setPagado(g.getPagado());
				bean.setPresupuesto(g.getPresupuest()); 
				listaPres.add(bean);
			}	
			if(lista!=null && lista.size()>0){
				r.setCodResultado(Constantes.CODIGO_OK);
				r.setDescResultado(Constantes.DESC_OK); 
				r.setListaPresupuesto(listaPres);
			}else{
				r.setCodResultado(Constantes.CODIGO_INFO01);
				r.setDescResultado(Constantes.DESC_INFO01); 	
			}			
		} catch (Exception e) {
			logger.info("Ocurrio un error al buscar presuepuesto:  "+e);  
		}finally{
			if(bean!=null){
				bean =null;
			}
			if(gasto!=null){
				gasto =null;
			}
		}
		return r;
	}

}
